package scr.hotel;

import java.util.List;

import scr.hibernate.InitSessionFactory;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;


public class Endereco {
	private int id;
	private String bairro;
	private String cidade;
	private String complemento;
	private String estado;
	private String numero;
	private String rua;
	private String cep;
	private String pais;	
	private Cliente cliente;

	public Endereco() {}

	public String getPais() {
		return pais;
	}
	public void setPais(String pais) {
		this.pais = pais;
	}

	public void setBairro(String b){
		this.bairro = b;
	}
	public String getBairro(){
		return bairro;
	}

	public void setCidade(String c){
		this.cidade = c;
	}
	public String getCidade(){
		return cidade;
	}

	public void setComplemento(String c){
		this.complemento = c;
	}
	public String getComplemento(){
		return complemento;
	}

	public void setEstado(String e){
		this.estado = e;
	}
	public String getEstado(){
		return estado;
	}

	public void setNumero(String n){
		this.numero = n;
	}
	public String getNumero(){
		return numero;
	}

	public void setRua(String r){
		this.rua = r;
	}
	public String getRua(){
		return rua;
	}

	public void setCep(String c){
		this.cep = c;
	}
	public String getCep(){
		return cep;
	}

	public void setId(int i){
		this.id = i;
	}
	public int getId(){
		return id;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public static void saveEndereco(Endereco endereco) {
		Transaction tx = null;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		try {
			tx = session.beginTransaction();
			session.save(endereco);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			if (tx != null && tx.isActive())
				tx.rollback();
		}
	}

	public static void deleteEndereco(Endereco endereco) {
		Transaction tx = null;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		try {
			tx = session.beginTransaction();
			session.delete(endereco);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			if (tx != null && tx.isActive())
				tx.rollback();
		}
	}

	// metodo para pegar o endereco do BD

	public static void buscaEndereco(Cliente cliente)
	{		
		Transaction tx = null;
		Session sessao = InitSessionFactory.getInstance().getCurrentSession();
//		Endereco retorno = null;
		
		try {
			tx = sessao.beginTransaction();
			List endereco = sessao.createCriteria(Endereco.class)
			.add( Restrictions.like("id", cliente.getId() ) )
			.list();

/*			if( endereco.isEmpty() ) return null;

			retorno = (Endereco)endereco.get(0);
*/			
			cliente.setEndereco( (Endereco)endereco.get(0) );
			tx.commit();

		} catch (HibernateException e) {
			e.printStackTrace();
		}

	//	return retorno;
	}

	public String toString(){
		return "rua: " + rua + " bairro: " + bairro + " cep: " + cep + "\n\n"; 
	}

}